package demo9.teht;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JApplet;
import javax.swing.JPanel;

/**
 *
 * @author Pasi
 */
public class T4_1Tehtava extends JApplet {
private Image kuva;
  private MediaTracker mt;
  private int kuvaX, kuvaY, kuvaK, kuvaL;

  @Override
  public void init() {
     mt = new MediaTracker(this);
     try {
       kuva = getImage(getDocumentBase(),"kuva1.jpg");
       mt.addImage(kuva,0);
       mt.waitForAll();
     } catch (Exception e) {}
     setBackground(Color.black);
     // alustetaan hiirenliikettä seuraava kuuntelija
     addMouseMotionListener(new HiirenLiikkeenKuutelija());
     // kuvan sijainti ja koko
     kuvaX = 0;
     kuvaY = 0;
     kuvaL = kuva.getWidth(this);  // kuvan leveys
     kuvaK = kuva.getHeight(this); // kuvan korkeus
     // piirto toteutetaan sisäisellä luokalla
     getContentPane().add(new PiirtoPaneeli());
  }
  
  public class PiirtoPaneeli extends JPanel {
      public void paintComponent(Graphics g) {
        g.drawImage(kuva,kuvaX,kuvaY,this);
   }   
  }  
  
  // Luokka toteuttaa hiirentapahtumat
  class HiirenLiikkeenKuutelija extends MouseMotionAdapter {
    // hiirtä raahattu
    @Override  
    public void mouseDragged(MouseEvent tapahtuma) {
      // hiiren raahauspiste
      int hiiriX = tapahtuma.getX();
      int hiiriY = tapahtuma.getY();
      // onko raahattu kuvan "päällä"
      if ((hiiriX > kuvaX && hiiriX < kuvaX+kuvaL) && (hiiriY > kuvaY && hiiriY < kuvaY+kuvaK)) {
        // otetaan kiinni kuvan keskeltä
        kuvaX = hiiriX - kuvaL / 2;
        kuvaY = hiiriY - kuvaK / 2;
        // tutkitaan voidaan kuvaa siirtää (rajoitetaan appletin pinta-alaan
        //if (tutkiSiirto()) repaint();
        repaint();
      }
    }
  }   
}
